Gramps is an open source genealogy application that runs on all major operating systems (Windows, Mac, Linux, etc). The application is written in Python, uses BSDDB database and has been under active development for many years. Gramps can read, import and export genealogical data in a few formats including GEDCOM. Gramps has defined its own file format, called Gramps XML, for archive and data exchange. The data format is freely available in its various versions at
http://gramps-project.org/xml/ .
Gramps actually has three file formats:
- Pure XML - just the genealogical data in XML textual format (.gramps extension)
- Pure XML - just the genealogical data, in a single gzip, compressed file (.gramps extension)
- XML + media - the genealogical data and media files, in a single tar, compressed file (.gpkg extension)
See the
Outline Of The GRAMPS Data Model written by Tom Wetmore. Tom has also written an evaluation of how well the Gramps model support the
Evidence and Conclusion Process. It is in the file
EvaluateGramps.pdf
Schemas
The above are XML text documents which define a genealogy database with the following top-level components:
- header - Information about the "owner" of the database
- name-formats
- people
- families
- events
- places
- sources
- media objects
- repositories
- notes
- bookmarks
- namemaps
- tags (new version)
Gramps model is not person or family centric, it is a very flexible model in action since many years.
Gramps XML can be an unique people and families database or events database, places database, sources database, media objects database, repositories database, notes database. We do not need to set a person for starting our genealogy. Some people use Gramps XML as a flat database with one type of object (events as an index, places with coordinates, list of sources, notes for transcriptions) !
Additional data model
For more details on the relationships of the above entities, see
gen lib and
summary.
The Gramps application has many tools for manipulating and exporting genealogical data. Recently, the Gramps developers have also developed fully relational data model imports and exports. For example, one can import and export to SQL tables (see
GRAMPS_SQL_Database). In addition, a relational website version is also under development (see
GEPS_013:_GRAMPS_Webapp).
Quick history of Gramps XML
Gramps
got started purely by accident on 21 April 2001. Gramps XML was used as internal database.
Since 2005, Gramps XML is only for archive, backup and data exchange.
Gramps XML is
supported by some tools and
convertors.
Samples Databases in Gramps XML format:
Anyone who wishes to elaborate, please do so.
Perhaps you know about the family object controversies and different approacches. Bob Velke has particularly said he believes the family object to be redundant and that it has no special properties that can't be accommodated by an event object.
What is GRAMPS's approach to this?
Such children are assigned only one reference number. Cross-indexing by the reference number replaces what might otherwise be duplicate descendant reporting.
Hope this helps. --GJ
Thanks. --GJ
P.S. I'm a Mac user
http://gramps.svn.sourceforge.net/viewvc/gramps/branches/maintenance/gramps32/example/gramps/example.gramps?revision=14425
Of course, Gramps can import your GEDCOM file, too.
As to GEDCOM import, most of my current information is in TMG. Let's just say that in the GEDCOM process, my sources and citations turn into mashed potatoes.
Maybe someone will hold my hand. --GJ
See [[GRAMPS+Data+Model|Gramps Data Model page]], there is an example for stable release (3.2.5) and/or next major release. Also a sample of TMG2gramps way for exporting more informations.
Perhaps because I'm on Firefox/Mac, when I click on the links, I see only a coded page--I can save the page but not download a file that can then be loaded into Gramps on my system.
Any assistance is appreciated. --GJ
Hope this could help.
Here's the first part of what I see in both Firefox and Safari:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database PUBLIC "-GRAMPSDTD GRAMPS XML 1.3.0//EN"
"http://gramps-project.org/xml/1.3.0/grampsxml.dtd">
<database xmlns="http://gramps-project.org/xml/1.3.0/">
<header>
<created date="2009-02-11" version="3.1.0-0.SVN11800:11807M"/>
<researcher>
<resname>Alex Roitman,,,</resname>
</researcher>
<mediapath>/home/cristina/programs/trunk/example/gramps</mediapath>
</header>
<events>
<event id="E0002" handle="_a5af0eb698f29568502" change="1185438865">
<type>Birth</type>
<dateval val="1928-07-09"/>
<place hlink="_1GTJQCCXZ3YO5QOFS"/>
</event>
<event id="E0080" handle="_a5af0eb71ab7a28986f" change="1185438865">
<type>Birth</type>
<dateval val="1969-12-03"/>
Download the XML file, and give it an extension of .gramps. If you have the extension associated with the Gramps application, you can just double-click it, or import the file from inside Gramps (create a family tree, then menu -> Family Trees -> Import). If you don't have .gramps associated with Gramps, then just select the type of import as "Gramps XML" and select the file from the import menu option.
Hope that helps,
-Doug
I can certainly add a link to this recurring argument. Let me find one.
Well, this blog posting is kind of funny to use, but here it is:
http://solumslekt.org/forays/exodus.php
In this posting, the person in question is actually making his own database but starting with a TMG database. He also has no family entity in his data model (read the Families section under the Data Model heading).
I'm still looking, but suffice it to say there's a large number of people using software products that don't include a separate family entity as some do, and I'm not trying to put Bob Velke up as some great poobah that has to be listened to, but this is a fairly well-known issue when it comes to genealogical data modeling.
gthorud, I also am trying to understand the implications either way. I have heard that eliminating a family entity removes some redundancy and works more elegantly, but I also like the idea of a relationship class of objects, of which the main one would probably be a biological family, that could also be used as I mention above.
I'm not sure what country you're in, but I doubt TMG is unknown there. This is a pretty well-known issue, at least in some quarters, so I am just curious to get your guys' take on it.
Sorry, TMG is far away to be a leader on my primary genealogical place and related.
Well, this blog posting is kind of funny to use, but here it is:
http://solumslekt.org/forays/exodus.php
I remember this blog, he had also contacted gramps devs via devel mailing list. Note, it is not the first time I see "TMG" noted on a page. I am still learning how it works, some people have never use it...
I have an other example of localized searchs.
The soundex concept is an English ASCII concept. Sounds are not the same according differents places in the world and non-ASCII characters was never the priority for US softwares. Will BG support non-ASCII characters (media, names, list order) ?
So, for the Gramps model, I suppose we can remove the idea of family object and use the idea of Relationship class. Current family object is used for displaying a group of persons. To flag/mark/tag some people related together should be the same. The biological lineage is something important, but does it mean that TMG ignores same sex relation as two persons related ? Or that adoption means this children is not of the family ? What about 'in law' or 'step' relations ? Genealogy should only be the timeline of the person ?
For the redundancy, on my seizure, I rather set a source on a filiation than on an individual. This validate a mother/father/child relation and this could also avoid some duplicated data three individuals ...
Note, opposite to 'TMG', GeneWeb ignores alone individual, without family there is no children and events. It creates a fake spouse if need!
My uneducated ideas on this topic:
I think a "family"-object isn't really needed if you're only dealing with simple (traditional) family structures. Everything that a "family" has, could be expressed as "relationships", or maybe "roles" at an event. E.g., a marriage event has two persons in the main roles, a birth event has one main role (the child) and two secondary roles (the parents). In this way, the relevant people are all interconnected. The job of the software would be to show these connections in an sensible way.
But I do suppose a relationship method that links two or more persons independently of an event would make sense. It could be useful, e.g. if two people are living together but are not married -- there's no "getting together" event like a marriage... or could one find an event for every possibility?
So is this already the same as having a "family" object? I'd prefer the more neutral term "group", after all, it just collects persons. A "group" should have a "type", like "family", or "unmarried relationship". You could also let the users define their own types of groups. Then maybe users might come up with things like school classes, army units, sport clubs.... That could be cool -- or it could be a nightmare ;)
I would want to be able to specify both genetic and social parent child relationships (e.g. adoptive, mother's partner who acts as a father).
If you just want to represent a traditional family tree, then a family object duplicates data, which is usually not recommended. There might be some performance advantages in storing who is included a particular tree for later retrieval.
I may want to represent a family unit as collection of people with a variety of different genetic and social relationships (e.g. a household of a couple who have some children from that relationship and other children from previous relationships living with them).
I would also like to be able to record people who are not family by are connected e.g. my grandmother's friend 'Aunty Tilly' who appears in numerous family photos.
Perhaps the tree drawing program could then have an option to include certain types of relationship.
This area needs very carefull thought. I am not sure it would be appropriate for wider groups like clubs etc. though.
Sue
Actually this is a very practical issue when it comes to data modeling. This is one of those weird areas that comes up when modeling data for databases that might freak a lot of people out. The concept of NOT having a family object, which several data models don't, of course has no effect on viewing a family within a database. I just am trying confirm there's no inherent property of this object that makes it vital. But as you can see from my ambivalence in the discussion, I don't have a firm commitment on the question either way.
First, a "family" reflects Relationships between two or more people.
These relationships are defined, and may change over time.
Usually these Relationships come about because of an Event. Some Events should be Shared Events.
Two people Meet. A Shared Event
They may or may not marry.
These two people of a child. That child has a Birth Event. (not shared). But a Relationship is established between the 'natural' parents.
One of the two people dies, so that shared event would have a new entry, changing the status of that relationship.
The surviving parent enters a new relationship. The new relationship either adopts or doesn't adopt the child. If the new relationship individual adopt that child, then the child has a new relationship with this new person.
What is the Family Object in this example? I don't know, but I do know that this "object" changes.
At this point, in this earlier discussion on this point, the Family Object is in the presentation to me, a user, in my software. The transportation of the information about these relationships is what I think (so far) the BetterGEDCOM project is trying to do. That is, trying to determine what information needs to be within the BetterGEDCOM 'requirements'.
So far, we have individuals, relationships between individuals, amd events (some of which are shared, others are not). Not going into other aspects of the information being shared.
Russ
I'm not sure a child can be affiliated to multiple families in Gramps, haven't tried it.
JaGu,
A strange Gramps' user you are ...
I hope Gramps will soon celebrate the ten years! I cannot imagine that you never used Family Editor ... Why as a person, a child will not be able to be "shared" between multiple families ? Maybe 'check data' tool will just warn you!
Such children are assigned only one reference number. Cross-indexing by the reference number replaces what might otherwise be duplicate descendant reporting.
Hope this helps. --GJ
Perhaps you know about the family object controversies and different approacches
What kind of controversies ?
Family status ? Social studies ? Cultural differences ?
Bob Velke has particularly said he believes the family object to be redundant and that it has no special properties that can't be accommodated by an event object.
It seems to me (I am not a coder), that we need family object for storing children and a simple kinship. So I cannot imagine that an event will handle a relationship. Father will still be a father we do not need to set time and place like an event. Does he wants to merge 'association' and 'relation' ? All stored like a census publication ? What kind of properties ? Sorry, I missed Bob Velke publication ... I answered as a simple Gramps translator and non-professional (and non-english) genealogist.
The Family record is the GRAMPS in-memory representation of the relationships between people. It contains all the information related to the relationship. Family objects are usually created in one of two ways: Creating a new Family object, which is then initialized and added to the database. Retrieving an object from the database using the records handle.
#{FamilyRelType.MARRIED} : indicates a legally recognized married relationship between two individuals. This may be either an opposite or a same sex relationship.
#{FamilyRelType.UNMARRIED} : indicates a relationship between two individuals that is not a legally recognized relationship.
#{FamilyRelType.CIVIL_UNION} : indicates a legally recongnized,non-married relationship between two individuals of the same sex.
#{FamilyRelType.UNKNOWN} : indicates that the type of relationship between the two individuals is not know.
#{FamilyRelType.CUSTOM} : indicates that the type of relationship between the two individuals does not match any of the other types
I just wonder what the "special properties" on family are ? any clue ?
I must admit that after using TMG for so long, I find it difficult to understand why a family object is needed. TMG is of course a pretty successful product, particularly in professional genealogist circles. On the other hand, I could imagine a need for a relationship class of objects which would allow definition of any combination of possible relationships. This family would be great for defining relationships that exist but that aren't known specifically through whom, form person to person, they derive.
Anyway, it's certainly very easy to work with genealogical information without family objects. I just wondered what the GRAMPS folks thought about the issue and wondered whether we should have family/relationship objects or simply rely on event objects (e.g., parent-child events).
This is actually a pretty big debate in some quarters, so I'm a little surprised to see your responses to my question so far.
Sure, family object is just a person reunion but I do not know why it should be ignored and replaced by events! I can answer how Gramps model tries to handle a family object but I cannot say why it should be ignored. Most GRAMPS folks only aim to properly store their data. I wonder why you do not added a link for us, like an url pointed out what Bob Velke has said.
Gramps model is an empiric model.
One culture needs something, then we try to handle this. This does not work for an other cultural use : "what could be the best solution for both".
Should family object be replaced by events ?
It sounds like a metaphysics question !!!
I am not aware of these quarters. Sorry.
Anyway, I am practicing genealogy on one of the most active place in the world and I have some English relatives. Your goals do not leave me indifferent. Should I stop to contribute with my small knowledges ?
I added some information about Gramps data model as contributions. They are freely available via Gramps' wiki or a quick search.
We help Gramps project but none of us make money with Gramps. Take some good idea (if exist) from Gramps model, contribute if you want, but I am pretty sure that most Gramps devs do not know what Bob Velke said about family object !!!